<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    /* 
    es6类里的关键字:  class  constructor   super   extends   static
    所有在类里定义的属性和方法 都是在构造器里执行的 
    es6中类里的所有方法自动开启严格模式
    */
    // 父类   
    class Person {
      // 静态属性  (类本身的属性)
      static height = '177cm'
      // 实例属性
      weight = '60kg'
      // 通过构造器添加实例属性  类被实例化时构造器自动执行
      constructor (name,age){
        this.name = name 
        this.age = age 
      }
      // 原型对象上的方法(原型方法)  每个实例都能访问
      sayInfo(){
        console.log(`我叫 ${this.name} , 今年 ${this.age}岁`);
      }
      // 添加实例方法
      eat= () => {
        console.log('吃饭');
      }
    }


    // 子类  继承父类
    class Student extends Person {
      constructor(name,age,sex){
        super(name,age) // 继承父类的属性 super调用必须在this之前 
        this.sex = sex
      }
      // 重写父类方法
      sayInfo(){
        console.log(`我叫 ${this.name} , 今年 ${this.age}岁, 性别${this.sex}`);
      }
    }

    const p1 = new Person('A' ,12)
    console.log(p1);
    p1.sayInfo()

    const p2 = new Student('B',18,'男')
    console.log(p2);
    p2.sayInfo()
  </script>
</body>
</html>